// package com.lsh.airticket.interceptor;
//
// import cn.hutool.core.codec.Base64;
// import com.auth0.jwt.interfaces.DecodedJWT;
// import com.lsh.airticket.exception.UserException;
// import com.lsh.airticket.util.JWTUtil;
// import org.springframework.lang.Nullable;
// import org.springframework.stereotype.Component;
// import org.springframework.web.servlet.HandlerInterceptor;
// import org.springframework.web.servlet.ModelAndView;
//
// import javax.servlet.http.HttpServletRequest;
// import javax.servlet.http.HttpServletResponse;
// import java.util.Map;
//
// /**
//  * @author lsh
//  * @date 2021/1/10
//  **/
// @Component
// public class LoginInterceptor implements HandlerInterceptor {
//     public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//         System.out.println("登录拦截器");
//         // OPTIONS请求类型直接返回不处理
//         if ("OPTIONS".equals(request.getMethod())) {
//             return false;
//         }
//
//
//         // //从头中获取token字符串
//         String token = request.getHeader("token");
//         System.out.println(token);
//         if (token == null || "".equals(token)) {
//             //token 不存在抛异常
//             throw new UserException("请登录！", 3);
//         }
//
//         Map<String, Object> user = null;
//         try {
//             token = Base64.decodeStr(token);
//             DecodedJWT verify = JWTUtil.verify(token);
//             user = verify.getClaim("user").asMap();
//         } catch (Exception e) {
//             e.printStackTrace();
//             //token 不合法抛异常  4表示用户失效
//             throw new UserException("用户已失效！", 4);
//         }
//
//         //获取标志位
//         Integer flag = (Integer) user.get("flag");
//
//         // 判断是不是管理员登录
//         String servletPath = request.getServletPath();
//         // System.out.println(servletPath);
//         if (servletPath.contains("/admin")) {
//             System.out.println("包含");
//             if (flag != null && flag != 1) {
//                 throw new UserException("没有管理员权限", 5);
//             }
//
//         } else {
//             if (flag != null && flag != 2) {
//                 throw new UserException("请用用户身份登录", 6);
//             }
//         }
//
//
//         return true;
//     }
//
//     public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable ModelAndView modelAndView) throws Exception {
//         System.out.println("MyInterceptor postHandle");
//     }
//
//     public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, @Nullable Exception ex) throws Exception {
//         System.out.println("MyInterceptor postHandle");
//     }
// }
